<?php

class AdmListPlantillas extends TPage {
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const SESION_DATOS = "arr";
  const CAMPO_ORDEN_DATAGRID = "CampoOrdenDataGrid";
  //funciones pagina
  const FUNCION_VER = "Ver";
  const FUNCION_CREAR = "Crear";
  const FUNCION_EDITAR = "Editar";
  const FUNCION_ELIMINAR = "Eliminar";

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene los registros desde la base de datos
   * @author VSR, 11/11/2011
   */
  private function obtenerDatos(){
    try {
      $oUsuario = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      //obtiene valores de los controles
      $idUsuario = $oUsuario->getId();
      $textoFiltroNombre = Utilidades::isNull($this->txtFiltroNombre->Text, "-1");
      $idEmpresa = Utilidades::isNull($this->ddlEmpresa->obtenerSelectedValue(), "-1");

      //obtiene listado
      $arr = WfPlantilla::obtenerListadoConFiltro($idUsuario, $textoFiltroNombre, $idEmpresa);

      //guarda el resultado en session
      Utilidades::grabarSessionPorNombre(self::SESION_DATOS, $arr);
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * actualiza los controles de la pagina segun los datos obtenidos
   * @author VSR, 11/11/2011
   */
  private function actualizaInterfaz(){
    $totalRegistros = 0;
    try {
      $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS);
      if(is_null($arr)) {
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }

      if($totalRegistros > 0) {
        $this->pnlHolderGrilla->Visible = true;
        //carga la grilla a utilizar
        $this->dgListado->Visible = true;
        $this->dgListado->DataSource = $arr;
        $this->dgListado->dataBind();
        Utilidades::configurarPaginadorDataGrid($this->dgListado->PagerStyle, $totalRegistros, $this->dgListado->PageSize);
        Utilidades::mostrarTotalRegistrosGrilla($totalRegistros, $this->lblTotalRegistros);
      } else {
        $this->pnlHolderGrilla->Visible = false;
        $this->pnlMensajeUsuario->Visible = true;
        $textoMensaje = "No se encontraron registros";
        Utilidades::setPanelMensajeUsuario($this->pnlMensajeUsuario, $textoMensaje, "50%", Utilidades::ESTILO_MENSAJE_ADVERTENCIA);
        //oculta la grilla
        $this->dgListado->Visible = false;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * inicializa algunos controles cuando se carga por primera vez la pagina
   * @param <type> $isPostBack
   * @author VSR, 11/11/2011
   */
  private function inicializaControles($isPostBack){
    try {
      $registrosPorPagina = $this->txtFiltroRegistrosPorPagina->Text;

      //-- inicializacion de controles que dependen del postBack --
      if(!$isPostBack){
        //colocar controles
      }

      //-- inicializacion de controles que NO dependen del postBack --
      if($registrosPorPagina == "") {
        $this->txtFiltroRegistrosPorPagina->Text = Utilidades::obtenerRegistrosPorPaginaDefault($this->Application);
      }
      $this->btnFiltrar->Attributes->Add("onclick", "return(validarFormularioBusquedaPlantilla())");
      $this->btnNuevo->Attributes->Add("onclick", "abrirFormularioPlantilla('0')");

      //verifica los permisos sobre los controles
      $this->verificarPermisos();

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * verifica los permisos sobre los controles
   * @author VSR, 01/01/2011
   */
  private function verificarPermisos(){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $this->pnlContenido->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_VER);
    $this->btnNuevo->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_CREAR);
    if(!$this->pnlContenido->Visible) {
      $this->pnlMensajeAcceso->Visible = true;
      Utilidades::setPanelMensajeUsuario($this->pnlMensajeAcceso, "No tiene permiso para ver esta p&aacute;gina", "50%", Utilidades::ESTILO_MENSAJE_ERROR);
    }
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    $this->inicializaControles($this->IsPostBack);
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;

    //si viene la primera vez obtenemos dato y actualizamos interfaz
    if($this->txtCargaDesdePopUp->Value == "1"){
      $this->obtenerDatos();
      $this->actualizaInterfaz();
    }
    $this->txtCargaDesdePopUp->Value = "0";
  }

  public function btnFiltrarClick($sender, $param){
    $pageSize = trim($this->txtFiltroRegistrosPorPagina->Text);
    if($pageSize == "" || $pageSize == "0") {
      $pageSize = Utilidades::obtenerRegistrosPorPaginaDefault($this->Application);
      $this->txtFiltroRegistrosPorPagina->Text = $pageSize;
    }
    //asigna total de registros por pagina
    $this->dgListado->PageSize = $pageSize;
    //Muestra la primera pagina del paginador
    $this->dgListado->CurrentPageIndex = 0;
    $this->obtenerDatos();
    $this->actualizaInterfaz();
  }

  public function onSortDataGrid($sender, $param) {
    $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS);
    $campoOrdenActualDataGrid = Utilidades::isNull(Utilidades::obtenerSessionPorNombre(self::CAMPO_ORDEN_DATAGRID),"");
    //obtiene el nuevo orden del arreglo
    $arr = Utilidades::obtenerSortArray($arr, $campoOrdenActualDataGrid, $param->SortExpression);
    //graba el orden actual
    Utilidades::grabarSessionPorNombre(self::CAMPO_ORDEN_DATAGRID, $campoOrdenActualDataGrid);
    //graba el array ordenado
    Utilidades::grabarSessionPorNombre(self::SESION_DATOS, $arr);
    //asigna
    $this->actualizaInterfaz();
  }

  public function onChangePageDataGrid($sender,$param) {
    $this->dgListado->CurrentPageIndex = $param->NewPageIndex;
    $this->actualizaInterfaz();
  }

  public function onPagerCreatedDataGrid($sender,$param) {
    $param->Pager->Controls->insertAt(0,"<span class=\"cssPaginadorNormal\">P&aacute;gina:</span> ");
  }

  public function onDataBoundDataGrid($sender, $param){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $indicePrimeraFila = Utilidades::obtenerIndicePrimeraFilaGrilla($this->dgListado);
    $themeBaseUrl = $this->txtThemeBaseUrl->Value;
    $item = $param->Item;
    if($item->ItemType==='Item' || $item->ItemType==='AlternatingItem')
    {
      $txtIdPlantilla = $item->findControl("txtIdPlantilla");
      $txtNombre = $item->findControl("txtNombre");
      $lblDetalle = $item->findControl("lblDetalle");
      $lblEliminar = $item->findControl("lblEliminar");
      $lblNombre = $item->findControl("lblNombre");

      $lblDetalle->Text = "<a href=\"javascript:;\" onclick=\"abrirFormularioPlantilla('".$txtIdPlantilla->Value."')\"><img src=\"" . $themeBaseUrl . "/img/_blank.gif\" class=\"ico18-edit\" alt=\"editar\" title=\"editar\" /></a>&nbsp;&nbsp;";
      $lblDetalle->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_EDITAR);
      $lblNombre->Text = (Utilidades::tienePermiso($paginaActual, self::FUNCION_EDITAR)) ? "<a href=\"javascript:;\" onclick=\"abrirFormularioPlantilla('".$txtIdPlantilla->Value."')\" class=\"cssLink\">".$txtNombre->Value."</a>" : $txtNombre->Value;
      $lblEliminar->Text = "<a href=\"javascript:;\" onclick=\"eliminarPlantilla('".$txtIdPlantilla->Value."')\"><img src=\"" . $themeBaseUrl . "/img/_blank.gif\" class=\"ico18-trush\" alt=\"eliminar\" title=\"eliminar\" /></a>";
      $lblEliminar->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_ELIMINAR);

      //limpia controles
      $txtIdPlantilla->Value = "";
      $txtNombre->Value = "";

      //asigna indice de la fila
      $indiceFila = $indicePrimeraFila + $item->ItemIndex;
      //asigna valor del indice de la fila al control
      Utilidades::setControlIndiceFila($item, "lblIndiceFila", $indiceFila);
    }
  }

//</editor-fold>

}

?>
